<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script>
<script>
	var app=angular.module('myApp', []);

	function MyCtrl($scope) {
	    $scope.currentPage = 0;
	    $scope.pageSize = 10;
	    $scope.data = [];
	    $scope.numberOfPages=function(){
	        return Math.ceil($scope.data.length/$scope.pageSize);
	    }
	    for (var i=0; i<45; i++) {
	        $scope.data.push("Item "+i);
	    }
	}

	//We already have a limitTo filter built-in to angular,
	//let's make a startFrom filter
	app.filter('startFrom', function() {
	    return function(input, start) {
	        start = +start; //parse to int
	        return input.slice(start);
	    }
	});
</script>

<body ng-app="myApp">
	<div ng-controller="MyCtrl">
		<ul>
			<li ng-repeat="item in data | startFrom:currentPage*pageSize | limitTo:pageSize">
				{{item}}
			</li>
		</ul>
		<button ng-disabled="currentPage == 0" ng-click="currentPage=currentPage-1">
			Previous
		</button>
		{{currentPage+1}}/{{numberOfPages()}}
		<button ng-disabled="currentPage >= data.length/pageSize - 1" ng-click="currentPage=currentPage+1">
			Next
		</button>
	</div>
</body>